/*
 *  RessourcesManager.h
 *  Rempart
 *
 *
 */

#ifndef __RESSOURCES_MANAGER
#define __RESSOURCES_MANAGER
#include <SFML/Graphics.hpp>
#include "Constants.h"
extern sf::Mutex globalLock;


class RessourcesManager {

public:
	static RessourcesManager* getInstance();
	
	static sf::Image* getDefaultGroundSurface();
	static sf::Image* getSecureGroundSurface();
	static sf::Image* getDefaultMouseOverSurface();
	static sf::Image* getDefaultWallSurface();
	static sf::Image* getDefaultWaterSurface();
	static sf::Image* getDefaultTowerSurface();
	static sf::Image* getSecureTowerSurface();
	static sf::Image* getDefaultBodyCanonSurface();
	static sf::Image* getDefaultTubeCanonSurface();
	static sf::Image* getDefaultBulletSurface();
	static sf::Image* getBoatBulletSurface();
	static sf::Image* getCursorSurface();
	static sf::Image* getLooseSplashScreenSurface();
	static sf::Image* getCollisionMouseOverSurface();
	static sf::Image* getDefaultBoatSurface();
	static sf::Image* getStage1Screen();
	static sf::Image* getStage2Screen();
	static sf::Image* getStage3Screen();
	
	static sf::Image* getStageScreen(int stage);
	~RessourcesManager();

private:
	static RessourcesManager* instance;

	
	static sf::Image* groundSurface;
	static sf::Image* secureGroundSurface;
	static sf::Image* surfaceMouseOver;
	static sf::Image* collisionMouseOverSurface;
	static sf::Image* surfaceWall;
	static sf::Image* surfaceWater;
	static sf::Image* surfaceTower;
	static sf::Image* surfaceTowerSecure;
	static sf::Image* surfaceBodyCanon;	
	static sf::Image* surfaceTubeCanon;	
	static sf::Image* surfaceBullet;
	static sf::Image* surfaceBulletBoat;
	static sf::Image* surfaceLooseSplashScreen;
	static sf::Image* surfaceCursor;
	static sf::Image* surfaceBoat;
	
	static sf::Image* stage1Screen;
	static sf::Image* stage2Screen;
	static sf::Image* stage3Screen;
	RessourcesManager();
	
};

#endif